package com.wl2o2o.lanqiao.xzfourteen;

import java.util.Arrays;

/** 
* @author : WLei224
* @date ：2023年3月19日 下午3:40:09 
* 唯一分解定理
*/
public class 阶乘的约数个数 {

	public static void main(String[] args) {
		int n = 100;
		System.out.println(facOfN(n));
	}
	public static long facOfN(int n) {
		//创建一个数组用于存放素数因子的个数
		int[] prime = new int[n+1];
		for(int i = 2; i<=n; i++) {
			int bak = i;
			for(int j =2; j*j <= bak; j++) {
				while(bak % j == 0) {
					prime[j]++;
					bak /= j;
				}
			}
			//n的约数个数打的补丁，因为当n时素数时，for循环不会执行
			if(bak > 1) prime[bak]++;
		}
		//此时数组中已经存放过100阶乘的素数因子出现的次数
		long ans = 1;
		System.out.println(Arrays.toString(prime));
		for(int i = 2; i<=n; i++) ans = ans * (prime[i] + 1);
		return ans;
		
		
		
	}

}
